Learning to play an instrument, or to sing, requires years of practice. In order to progress as fast as possible an aspiring musician will usually take lessons from a teacher who can give constructive feedback and who can tell the student what to work on. However, for the student, lessons are rare compared to practice sessions. A student will practice on several days between lessons and on those days the student does not receive any help or feedback. However, with sophisticated software running on a data processing device it is possible to create a virtual teacher that can determine some parameters of a musical performance without the need for a human assessment. A number of virtual teacher programs exist. A problem with the prior art virtual teacher programs is that the output from them is quite limited, at least during a live performance. More detailed analyses of the musical performance may be available in a summary section of the program, but lack of real-time guidance remains a problem. For instance, a virtual teaching program that analyses the performance after the performance has ended provides little useful feedback to the musician regarding what changes in body or hand position caused what changes in performance.